﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Persistencia;
using Persistencia.Interfaces;

namespace GestorDeFlotasModelo.Entities
{
    public partial class Turno : IPersistibleModelo, IIdentityEntity
    {
        PersistibleDB persistible;
        #region Miembros de IPersistibleModelo

        void IPersistibleModelo.CargarParametrosClave(HashTableNCSensitive parameters)
        {
            parameters.Add("Turno_Id", this.Id);
        }

        void IPersistibleModelo.CargarParametrosNoClave(HashTableNCSensitive parameters)
        {
            parameters.Add("Turno_Descripcion", this.Descripcion);
            parameters.Add("Turno_Habilitado", this.Habilitado);
            parameters.Add("Turno_Hora_Inicio", this.HoraInicio);
            parameters.Add("Turno_Hora_Fin", this.HoraFin);
            parameters.Add("Turno_Valor_Bandera", this.ValorBandera);
            parameters.Add("Turno_Valor_Ficha", this.ValorFicha);
            
        }

        void IPersistibleModelo.Cargar(HashTableNCSensitive hts)
        {
            this.Id = int.Parse(hts["Turno_Id"].ToString());
            this.Descripcion = (hts["Turno_Descripcion"].ToString());
            this.HoraInicio = int.Parse(hts["Turno_Hora_Inicio"].ToString());
            this.HoraFin = int.Parse(hts["Turno_Hora_Fin"].ToString());
            this.ValorBandera = double.Parse(hts["Turno_Valor_Bandera"].ToString());
            this.ValorFicha = double.Parse(hts["Turno_Valor_Ficha"].ToString());
            this.Habilitado = bool.Parse(hts["Turno_Habilitado"].ToString());
        }

        void IPersistibleModelo.AntesInsert() { }

        void IPersistibleModelo.AntesUpdate() { }

        void IPersistibleModelo.AntesDelete() { }

        void IPersistibleModelo.DespuesInsert() { }

        void IPersistibleModelo.DespuesUpdate() { }

        void IPersistibleModelo.DespuesDelete() { }

        string IPersistibleModelo.HashDatos
        {
            get { return this.Id+this.Descripcion+this.HoraInicio+this.HoraFin+this.ValorBandera+this.ValorFicha+this.Habilitado; }
        }

        PersistibleDB IPersistibleModelo.Persistible
        {
            get
            {
                return this.persistible;
            }
            set
            {
                this.persistible = value;
            }
        }

        #endregion

        #region Miembros de IIdentityFactory

        long IIdentityEntity.Id
        {
            get
            {
                return this.Id;
            }
            set
            {
                this.Id = value;
            }
        }

        #endregion

        #region Miembros de IPersistible

        void IPersistible.Insert()
        {
            this.persistible.Insert();
        }

        void IPersistible.Update()
        {
            this.persistible.Update();
        }

        void IPersistible.Delete()
        {
            this.persistible.Delete();
        }

        #endregion
    }
}
